package com.xuelang.pipeline.artifact.app.resource;

import com.xuelang.pipeline.artifact.client.common.request.PageParam;
import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.RepositoryAssetBuildHistoryDTO;
import com.xuelang.pipeline.artifact.client.resource.dto.RepositoryAssetDTO;
import com.xuelang.pipeline.artifact.client.resource.dto.RepositoryComponentDTO;
import com.xuelang.pipeline.artifact.client.resource.dto.RepositoryComponentQuery;

import java.util.List;

/**
 * 制品组件服务接口
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface RepositoryComponentService {
    /**
     * 查询制品组件列表(有过滤条件)
     *
     * @param dtoPageParam
     * @return
     */
    PageRecord<RepositoryComponentDTO> pageList(PageParam<RepositoryComponentQuery> dtoPageParam);

    /**
     * 查询制品组件列表(有过滤条件)
     *
     * @param repositoryComponentQuery
     * @return
     */
    List<RepositoryComponentDTO> list(RepositoryComponentQuery repositoryComponentQuery);

    /**
     * 删除制品组件
     *
     * @param restId
     * @return
     */
    Boolean delete(String restId);
    /**
     * 查询制品组件
     *
     * @param restId
     * @return
     */
    RepositoryComponentDTO query(String restId);
    /**
     * 查询制品组件下文件列表
     *
     * @param restId 制品组件UUID
     * @return
     */
    List<RepositoryAssetDTO> listAssetsBytRestId(String restId);
    /**
     * 镜像文件构建历史列表
     *
     * @param restId 制品组件UUID
     * @return
     */
    List<RepositoryAssetBuildHistoryDTO> dockerArtifactBuildHistory(String restId);
}
